package org.example.mq.mqsever.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.example.mq.mqsever.core.Binding;
import org.example.mq.mqsever.core.Exchange;
import org.example.mq.mqsever.core.MSGQueue;
import org.springframework.context.annotation.Bean;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:做渐进主义的改良派,不做完没注意的速成派
 * User: XALEXC
 * Date: 2025-05-06
 * Time: 15:57
 */
@Mapper
public interface MetaMapper {
    // 提供三个核心建表方法
    void createExchangeTable();
    void createQueueTable();
    void createBindingTable();

    // 针对上述三个基本概念,进行插入和删除
    void insertExchange(Exchange exchange);
    void deleteExchange(String exchangeName);
    List<Exchange> selectAllExchanges();
    void insertQueue(MSGQueue queue);
    void deleteQueue(String queueName);
    List<MSGQueue> selectAllQueues();
    void insertBinding(Binding binding);
    void deleteBinding(Binding binding);
    List<Binding> selectAllBindings();
    // 这里没有 Message 的原因是 Message 作为比较庞大的消息数据,放在数据库中存储,并不合适,虽然说也可以,但是你想
    // 我发送的消息小到 1个字 大到 一篇文章 ,那么此时在建表的时候你应该给 Message 表中的 content 属性设置多大的空间呢?
    // 总不能说,我们要求用户发送的数据不能超过几个字吧.所以在此 将 Message 数据存储到文件当中,是最好的选择.
}
